package com.zxb.base.monitor;

import cn.hutool.core.util.NumberUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;

/**
 * @author Zxb
 */
@Getter
@AllArgsConstructor
public enum MonitorStatusEnum {
    /**
     * 正常
     */
    GREEN(1),

    /**
     * 警告
     */
    YELLOW(2),

    /**
     * 紧急
     */
    RED(3),
    ;

    private final int value;

    /**
     * 根据值获取枚举
     * @param value 值
     * @return
     */
    public static MonitorStatusEnum findByValue(Integer value) {
        if (Objects.nonNull(value)) {
            for (MonitorStatusEnum status : values()) {
                if (NumberUtil.equals(status.getValue(), value)) {
                    return status;
                }
            }
        }
        return GREEN;
    }

    /**
     * 获取高优先级
     * @param statusEnum 状态
     * @return
     */
    public MonitorStatusEnum max(MonitorStatusEnum statusEnum) {
        if (Objects.nonNull(statusEnum)) {
            return findByValue(Math.max(this.value, statusEnum.value));
        }
        return this;
    }
}
